(function() {

	'use strict';

	angular.module('ielApp')
	.factory('SaidaProdutoFactory', ['$http', '$q', '$window', function($http, $q, $window) {


		function listarSaida() {

			var retorno = $q.defer();

			$http.get('/EstoqueBackEndVersao1.0/rest/saidaProduto/verTodasAsSaidas')
			.success(function(data) {

				retorno.resolve(data);
			})
			.error(function() {

				alert("aconteceu algum erro");
			})

			return retorno.promise;
		}

		function verQuantidade(id) {

			var retorno = $q.defer();

			$http.get('/EstoqueBackEndVersao1.0/rest/estoque/verQuantidade/'+ id)
			.success(function(data) {

				retorno.resolve(data);
			})
			.error(function() {

				alert("aconteceu algum erro");
			})

			return retorno.promise;
		}

		function deletar(id, produto) {

			if(window.confirm("Tem certeza que deseja excluir " + produto.qtde + " unidade(s) do produto " + produto.produto.descricao + "?")){

				$http.delete('/EstoqueBackEndVersao1.0/rest/saidaProduto/deletar/'+ id).success(function(data) {

					alert("excluído com sucesso!")
					$window.location.reload();
				})
				.error(function() {

					alert("Aconteceu algo ruim! Verifique sua conexão de internet");
				}); 

			}else {

			}


		}
		
	function listarProdutos() {
			
			var retorno = $q.defer();

			$http.get('/EstoqueBackEndVersao1.0/rest/produto/listarProdutos').success(function(data) {

				retorno.resolve(data);
			})
			.error(function() {

				alert("Aconteceu algo ruim! Verifique sua conexão de internet");
			}); 


			return retorno.promise;
			
		}
	
	function verPreco(id) {

		var retorno = $q.defer();

		$http.get('/EstoqueBackEndVersao1.0/rest/entradaProduto/verApenasPreco/'+ id)
		.success(function(data) {

			retorno.resolve(data);
		})
		.error(function() {

			alert("aconteceu algum erro");
		})

		return retorno.promise;
	}
	
	function salvar(produto, quantidade) {
		
		
		var saidaProdutoJson = function (){
            return angular.toJson({
           	  "idProduto": produto.produto.id,
                "qtde": quantidade.qtde,
                "precoCusto": produto.precoCusto,
                "valorUnitario": quantidade.valorUnitario
            });
        };
		
		$http.post('/EstoqueBackEndVersao1.0/rest/saidaProduto/salvar', saidaProdutoJson())
		.success(function() {
			alert("cadastrado com sucesso!");
			$window.location.reload();
		})
		.error(function() {
			alert("algum ruim aconteceu");
		})
	}

		return {

			listarSaida: listarSaida,
			deletar: deletar,
			verQuantidade: verQuantidade,
			listarProdutos: listarProdutos,
			verPreco: verPreco,
			salvar: salvar

		}

	}]);


}());